// This is a GENERATED file. Do not modify by hand.
// Created by verigpu/generation/dadda.py

// Multiply two 32-bit integers 'a' and 'b', and put result in 63-bit integer 'out'.

module dadda_32bit32(
    input [31:0] a,
    input [31:0] b,
    output [31:0] out
);
    wire wire_0;
    wire wire_1;
    wire wire_2;
    wire wire_3;
    wire wire_4;
    wire wire_5;
    wire wire_6;
    wire wire_7;
    wire wire_8;
    wire wire_9;
    wire wire_10;
    wire wire_11;
    wire wire_12;
    wire wire_13;
    wire wire_14;
    wire wire_15;
    wire wire_16;
    wire wire_17;
    wire wire_18;
    wire wire_19;
    wire wire_20;
    wire wire_21;
    wire wire_22;
    wire wire_23;
    wire wire_24;
    wire wire_25;
    wire wire_26;
    wire wire_27;
    wire wire_28;
    wire wire_29;
    wire wire_30;
    wire wire_31;
    wire wire_32;
    wire wire_33;
    wire wire_34;
    wire wire_35;
    wire wire_36;
    wire wire_37;
    wire wire_38;
    wire wire_39;
    wire wire_40;
    wire wire_41;
    wire wire_42;
    wire wire_43;
    wire wire_44;
    wire wire_45;
    wire wire_46;
    wire wire_47;
    wire wire_48;
    wire wire_49;
    wire wire_50;
    wire wire_51;
    wire wire_52;
    wire wire_53;
    wire wire_54;
    wire wire_55;
    wire wire_56;
    wire wire_57;
    wire wire_58;
    wire wire_59;
    wire wire_60;
    wire wire_61;
    wire wire_62;
    wire wire_63;
    wire wire_64;
    wire wire_65;
    wire wire_66;
    wire wire_67;
    wire wire_68;
    wire wire_69;
    wire wire_70;
    wire wire_71;
    wire wire_72;
    wire wire_73;
    wire wire_74;
    wire wire_75;
    wire wire_76;
    wire wire_77;
    wire wire_78;
    wire wire_79;
    wire wire_80;
    wire wire_81;
    wire wire_82;
    wire wire_83;
    wire wire_84;
    wire wire_85;
    wire wire_86;
    wire wire_87;
    wire wire_88;
    wire wire_89;
    wire wire_90;
    wire wire_91;
    wire wire_92;
    wire wire_93;
    wire wire_94;
    wire wire_95;
    wire wire_96;
    wire wire_97;
    wire wire_98;
    wire wire_99;
    wire wire_100;
    wire wire_101;
    wire wire_102;
    wire wire_103;
    wire wire_104;
    wire wire_105;
    wire wire_106;
    wire wire_107;
    wire wire_108;
    wire wire_109;
    wire wire_110;
    wire wire_111;
    wire wire_112;
    wire wire_113;
    wire wire_114;
    wire wire_115;
    wire wire_116;
    wire wire_117;
    wire wire_118;
    wire wire_119;
    wire wire_120;
    wire wire_121;
    wire wire_122;
    wire wire_123;
    wire wire_124;
    wire wire_125;
    wire wire_126;
    wire wire_127;
    wire wire_128;
    wire wire_129;
    wire wire_130;
    wire wire_131;
    wire wire_132;
    wire wire_133;
    wire wire_134;
    wire wire_135;
    wire wire_136;
    wire wire_137;
    wire wire_138;
    wire wire_139;
    wire wire_140;
    wire wire_141;
    wire wire_142;
    wire wire_143;
    wire wire_144;
    wire wire_145;
    wire wire_146;
    wire wire_147;
    wire wire_148;
    wire wire_149;
    wire wire_150;
    wire wire_151;
    wire wire_152;
    wire wire_153;
    wire wire_154;
    wire wire_155;
    wire wire_156;
    wire wire_157;
    wire wire_158;
    wire wire_159;
    wire wire_160;
    wire wire_161;
    wire wire_162;
    wire wire_163;
    wire wire_164;
    wire wire_165;
    wire wire_166;
    wire wire_167;
    wire wire_168;
    wire wire_169;
    wire wire_170;
    wire wire_171;
    wire wire_172;
    wire wire_173;
    wire wire_174;
    wire wire_175;
    wire wire_176;
    wire wire_177;
    wire wire_178;
    wire wire_179;
    wire wire_180;
    wire wire_181;
    wire wire_182;
    wire wire_183;
    wire wire_184;
    wire wire_185;
    wire wire_186;
    wire wire_187;
    wire wire_188;
    wire wire_189;
    wire wire_190;
    wire wire_191;
    wire wire_192;
    wire wire_193;
    wire wire_194;
    wire wire_195;
    wire wire_196;
    wire wire_197;
    wire wire_198;
    wire wire_199;
    wire wire_200;
    wire wire_201;
    wire wire_202;
    wire wire_203;
    wire wire_204;
    wire wire_205;
    wire wire_206;
    wire wire_207;
    wire wire_208;
    wire wire_209;
    wire wire_210;
    wire wire_211;
    wire wire_212;
    wire wire_213;
    wire wire_214;
    wire wire_215;
    wire wire_216;
    wire wire_217;
    wire wire_218;
    wire wire_219;
    wire wire_220;
    wire wire_221;
    wire wire_222;
    wire wire_223;
    wire wire_224;
    wire wire_225;
    wire wire_226;
    wire wire_227;
    wire wire_228;
    wire wire_229;
    wire wire_230;
    wire wire_231;
    wire wire_232;
    wire wire_233;
    wire wire_234;
    wire wire_235;
    wire wire_236;
    wire wire_237;
    wire wire_238;
    wire wire_239;
    wire wire_240;
    wire wire_241;
    wire wire_242;
    wire wire_243;
    wire wire_244;
    wire wire_245;
    wire wire_246;
    wire wire_247;
    wire wire_248;
    wire wire_249;
    wire wire_250;
    wire wire_251;
    wire wire_252;
    wire wire_253;
    wire wire_254;
    wire wire_255;
    wire wire_256;
    wire wire_257;
    wire wire_258;
    wire wire_259;
    wire wire_260;
    wire wire_261;
    wire wire_262;
    wire wire_263;
    wire wire_264;
    wire wire_265;
    wire wire_266;
    wire wire_267;
    wire wire_268;
    wire wire_269;
    wire wire_270;
    wire wire_271;
    wire wire_272;
    wire wire_273;
    wire wire_274;
    wire wire_275;
    wire wire_276;
    wire wire_277;
    wire wire_278;
    wire wire_279;
    wire wire_280;
    wire wire_281;
    wire wire_282;
    wire wire_283;
    wire wire_284;
    wire wire_285;
    wire wire_286;
    wire wire_287;
    wire wire_288;
    wire wire_289;
    wire wire_290;
    wire wire_291;
    wire wire_292;
    wire wire_293;
    wire wire_294;
    wire wire_295;
    wire wire_296;
    wire wire_297;
    wire wire_298;
    wire wire_299;
    wire wire_300;
    wire wire_301;
    wire wire_302;
    wire wire_303;
    wire wire_304;
    wire wire_305;
    wire wire_306;
    wire wire_307;
    wire wire_308;
    wire wire_309;
    wire wire_310;
    wire wire_311;
    wire wire_312;
    wire wire_313;
    wire wire_314;
    wire wire_315;
    wire wire_316;
    wire wire_317;
    wire wire_318;
    wire wire_319;
    wire wire_320;
    wire wire_321;
    wire wire_322;
    wire wire_323;
    wire wire_324;
    wire wire_325;
    wire wire_326;
    wire wire_327;
    wire wire_328;
    wire wire_329;
    wire wire_330;
    wire wire_331;
    wire wire_332;
    wire wire_333;
    wire wire_334;
    wire wire_335;
    wire wire_336;
    wire wire_337;
    wire wire_338;
    wire wire_339;
    wire wire_340;
    wire wire_341;
    wire wire_342;
    wire wire_343;
    wire wire_344;
    wire wire_345;
    wire wire_346;
    wire wire_347;
    wire wire_348;
    wire wire_349;
    wire wire_350;
    wire wire_351;
    wire wire_352;
    wire wire_353;
    wire wire_354;
    wire wire_355;
    wire wire_356;
    wire wire_357;
    wire wire_358;
    wire wire_359;
    wire wire_360;
    wire wire_361;
    wire wire_362;
    wire wire_363;
    wire wire_364;
    wire wire_365;
    wire wire_366;
    wire wire_367;
    wire wire_368;
    wire wire_369;
    wire wire_370;
    wire wire_371;
    wire wire_372;
    wire wire_373;
    wire wire_374;
    wire wire_375;
    wire wire_376;
    wire wire_377;
    wire wire_378;
    wire wire_379;
    wire wire_380;
    wire wire_381;
    wire wire_382;
    wire wire_383;
    wire wire_384;
    wire wire_385;
    wire wire_386;
    wire wire_387;
    wire wire_388;
    wire wire_389;
    wire wire_390;
    wire wire_391;
    wire wire_392;
    wire wire_393;
    wire wire_394;
    wire wire_395;
    wire wire_396;
    wire wire_397;
    wire wire_398;
    wire wire_399;
    wire wire_400;
    wire wire_401;
    wire wire_402;
    wire wire_403;
    wire wire_404;
    wire wire_405;
    wire wire_406;
    wire wire_407;
    wire wire_408;
    wire wire_409;
    wire wire_410;
    wire wire_411;
    wire wire_412;
    wire wire_413;
    wire wire_414;
    wire wire_415;
    wire wire_416;
    wire wire_417;
    wire wire_418;
    wire wire_419;
    wire wire_420;
    wire wire_421;
    wire wire_422;
    wire wire_423;
    wire wire_424;
    wire wire_425;
    wire wire_426;
    wire wire_427;
    wire wire_428;
    wire wire_429;
    wire wire_430;
    wire wire_431;
    wire wire_432;
    wire wire_433;
    wire wire_434;
    wire wire_435;
    wire wire_436;
    wire wire_437;
    wire wire_438;
    wire wire_439;
    wire wire_440;
    wire wire_441;
    wire wire_442;
    wire wire_443;
    wire wire_444;
    wire wire_445;
    wire wire_446;
    wire wire_447;
    wire wire_448;
    wire wire_449;
    wire wire_450;
    wire wire_451;
    wire wire_452;
    wire wire_453;
    wire wire_454;
    wire wire_455;
    wire wire_456;
    wire wire_457;
    wire wire_458;
    wire wire_459;
    wire wire_460;
    wire wire_461;
    wire wire_462;
    wire wire_463;
    wire wire_464;
    wire wire_465;
    wire wire_466;
    wire wire_467;
    wire wire_468;
    wire wire_469;
    wire wire_470;
    wire wire_471;
    wire wire_472;
    wire wire_473;
    wire wire_474;
    wire wire_475;
    wire wire_476;
    wire wire_477;
    wire wire_478;
    wire wire_479;
    wire wire_480;
    wire wire_481;
    wire wire_482;
    wire wire_483;
    wire wire_484;
    wire wire_485;
    wire wire_486;
    wire wire_487;
    wire wire_488;
    wire wire_489;
    wire wire_490;
    wire wire_491;
    wire wire_492;
    wire wire_493;
    wire wire_494;
    wire wire_495;
    wire wire_496;
    wire wire_497;
    wire wire_498;
    wire wire_499;
    wire wire_500;
    wire wire_501;
    wire wire_502;
    wire wire_503;
    wire wire_504;
    wire wire_505;
    wire wire_506;
    wire wire_507;
    wire wire_508;
    wire wire_509;
    wire wire_510;
    wire wire_511;
    wire wire_512;
    wire wire_513;
    wire wire_514;
    wire wire_515;
    wire wire_516;
    wire wire_517;
    wire wire_518;
    wire wire_519;
    wire wire_520;
    wire wire_521;
    wire wire_522;
    wire wire_523;
    wire wire_524;
    wire wire_525;
    wire wire_526;
    wire wire_527;
    wire wire_528;
    wire wire_529;
    wire wire_530;
    wire wire_531;
    wire wire_532;
    wire wire_533;
    wire wire_534;
    wire wire_535;
    wire wire_536;
    wire wire_537;
    wire wire_538;
    wire wire_539;
    wire wire_540;
    wire wire_541;
    wire wire_542;
    wire wire_543;
    wire wire_544;
    wire wire_545;
    wire wire_546;
    wire wire_547;
    wire wire_548;
    wire wire_549;
    wire wire_550;
    wire wire_551;
    wire wire_552;
    wire wire_553;
    wire wire_554;
    wire wire_555;
    wire wire_556;
    wire wire_557;
    wire wire_558;
    wire wire_559;
    wire wire_560;
    wire wire_561;
    wire wire_562;
    wire wire_563;
    wire wire_564;
    wire wire_565;
    wire wire_566;
    wire wire_567;
    wire wire_568;
    wire wire_569;
    wire wire_570;
    wire wire_571;
    wire wire_572;
    wire wire_573;
    wire wire_574;
    wire wire_575;
    wire wire_576;
    wire wire_577;
    wire wire_578;
    wire wire_579;
    wire wire_580;
    wire wire_581;
    wire wire_582;
    wire wire_583;
    wire wire_584;
    wire wire_585;
    wire wire_586;
    wire wire_587;
    wire wire_588;
    wire wire_589;
    wire wire_590;
    wire wire_591;
    wire wire_592;
    wire wire_593;
    wire wire_594;
    wire wire_595;
    wire wire_596;
    wire wire_597;
    wire wire_598;
    wire wire_599;
    wire wire_600;
    wire wire_601;
    wire wire_602;
    wire wire_603;
    wire wire_604;
    wire wire_605;
    wire wire_606;
    wire wire_607;
    wire wire_608;
    wire wire_609;
    wire wire_610;
    wire wire_611;
    wire wire_612;
    wire wire_613;
    wire wire_614;
    wire wire_615;
    wire wire_616;
    wire wire_617;
    wire wire_618;
    wire wire_619;
    wire wire_620;
    wire wire_621;
    wire wire_622;
    wire wire_623;
    wire wire_624;
    wire wire_625;
    wire wire_626;
    wire wire_627;
    wire wire_628;
    wire wire_629;
    wire wire_630;
    wire wire_631;
    wire wire_632;
    wire wire_633;
    wire wire_634;
    wire wire_635;
    wire wire_636;
    wire wire_637;
    wire wire_638;
    wire wire_639;
    wire wire_640;
    wire wire_641;
    wire wire_642;
    wire wire_643;
    wire wire_644;
    wire wire_645;
    wire wire_646;
    wire wire_647;
    wire wire_648;
    wire wire_649;
    wire wire_650;
    wire wire_651;
    wire wire_652;
    wire wire_653;
    wire wire_654;
    wire wire_655;
    wire wire_656;
    wire wire_657;
    wire wire_658;
    wire wire_659;
    wire wire_660;
    wire wire_661;
    wire wire_662;
    wire wire_663;
    wire wire_664;
    wire wire_665;
    wire wire_666;
    wire wire_667;
    wire wire_668;
    wire wire_669;
    wire wire_670;
    wire wire_671;
    wire wire_672;
    wire wire_673;
    wire wire_674;
    wire wire_675;
    wire wire_676;
    wire wire_677;
    wire wire_678;
    wire wire_679;
    wire wire_680;
    wire wire_681;
    wire wire_682;
    wire wire_683;
    wire wire_684;
    wire wire_685;
    wire wire_686;
    wire wire_687;
    wire wire_688;
    wire wire_689;
    wire wire_690;
    wire wire_691;
    wire wire_692;
    wire wire_693;
    wire wire_694;
    wire wire_695;
    wire wire_696;
    wire wire_697;
    wire wire_698;
    wire wire_699;
    wire wire_700;
    wire wire_701;
    wire wire_702;
    wire wire_703;
    wire wire_704;
    wire wire_705;
    wire wire_706;
    wire wire_707;
    wire wire_708;
    wire wire_709;
    wire wire_710;
    wire wire_711;
    wire wire_712;
    wire wire_713;
    wire wire_714;
    wire wire_715;
    wire wire_716;
    wire wire_717;
    wire wire_718;
    wire wire_719;
    wire wire_720;
    wire wire_721;
    wire wire_722;
    wire wire_723;
    wire wire_724;
    wire wire_725;
    wire wire_726;
    wire wire_727;
    wire wire_728;
    wire wire_729;
    wire wire_730;
    wire wire_731;
    wire wire_732;
    wire wire_733;
    wire wire_734;
    wire wire_735;
    wire wire_736;
    wire wire_737;
    wire wire_738;
    wire wire_739;
    wire wire_740;
    wire wire_741;
    wire wire_742;
    wire wire_743;
    wire wire_744;
    wire wire_745;
    wire wire_746;
    wire wire_747;
    wire wire_748;
    wire wire_749;
    wire wire_750;
    wire wire_751;
    wire wire_752;
    wire wire_753;
    wire wire_754;
    wire wire_755;
    wire wire_756;
    wire wire_757;
    wire wire_758;
    wire wire_759;
    wire wire_760;
    wire wire_761;
    wire wire_762;
    wire wire_763;
    wire wire_764;
    wire wire_765;
    wire wire_766;
    wire wire_767;
    wire wire_768;
    wire wire_769;
    wire wire_770;
    wire wire_771;
    wire wire_772;
    wire wire_773;
    wire wire_774;
    wire wire_775;
    wire wire_776;
    wire wire_777;
    wire wire_778;
    wire wire_779;
    wire wire_780;
    wire wire_781;
    wire wire_782;
    wire wire_783;
    wire wire_784;
    wire wire_785;
    wire wire_786;
    wire wire_787;
    wire wire_788;
    wire wire_789;
    wire wire_790;
    wire wire_791;
    wire wire_792;
    wire wire_793;
    wire wire_794;
    wire wire_795;
    wire wire_796;
    wire wire_797;
    wire wire_798;
    wire wire_799;
    wire wire_800;
    wire wire_801;
    wire wire_802;
    wire wire_803;
    wire wire_804;
    wire wire_805;
    wire wire_806;
    wire wire_807;
    wire wire_808;
    wire wire_809;
    wire wire_810;
    wire wire_811;
    wire wire_812;
    wire wire_813;
    wire wire_814;
    wire wire_815;
    wire wire_816;
    wire wire_817;
    wire wire_818;
    wire wire_819;
    wire wire_820;
    wire wire_821;
    wire wire_822;
    wire wire_823;
    wire wire_824;
    wire wire_825;
    wire wire_826;
    wire wire_827;
    wire wire_828;
    wire wire_829;
    wire wire_830;
    wire wire_831;
    wire wire_832;
    wire wire_833;
    wire wire_834;
    wire wire_835;
    wire wire_836;
    wire wire_837;
    wire wire_838;
    wire wire_839;
    wire wire_840;
    wire wire_841;
    wire wire_842;
    wire wire_843;
    wire wire_844;
    wire wire_845;
    wire wire_846;
    wire wire_847;
    wire wire_848;
    wire wire_849;
    wire wire_850;
    wire wire_851;
    wire wire_852;
    wire wire_853;
    wire wire_854;
    wire wire_855;
    wire wire_856;
    wire wire_857;
    wire wire_858;
    wire wire_859;
    wire wire_860;
    wire wire_861;
    wire wire_862;
    wire wire_863;
    wire wire_864;
    wire wire_865;
    wire wire_866;
    wire wire_867;
    wire wire_868;
    wire wire_869;
    wire wire_870;
    wire wire_871;
    wire wire_872;
    wire wire_873;
    wire wire_874;
    wire wire_875;
    wire wire_876;
    wire wire_877;
    wire wire_878;
    wire wire_879;
    wire wire_880;
    wire wire_881;
    wire wire_882;
    wire wire_883;
    wire wire_884;
    wire wire_885;
    wire wire_886;
    wire wire_887;
    wire wire_888;
    wire wire_889;
    wire wire_890;
    wire wire_891;
    wire wire_892;
    wire wire_893;
    wire wire_894;
    wire wire_895;
    wire wire_896;
    wire wire_897;
    wire wire_898;
    wire wire_899;
    wire wire_900;
    wire wire_901;
    wire wire_902;
    wire wire_903;
    wire wire_904;
    wire wire_905;
    wire wire_906;
    wire wire_907;
    wire wire_908;
    wire wire_909;
    wire wire_910;
    wire wire_911;
    wire wire_912;
    wire wire_913;
    wire wire_914;
    wire wire_915;
    wire wire_916;
    wire wire_917;
    wire wire_918;
    wire wire_919;
    wire wire_920;
    wire wire_921;
    wire wire_922;
    wire wire_923;
    wire wire_924;
    wire wire_925;
    wire wire_926;
    wire wire_927;
    wire wire_928;
    wire wire_929;
    wire [31:0] t1;
    wire [31:0] t2;
    wire [15:0] out1;
    wire [15:0] out2a;
    wire [15:0] out2b;
    wire [15:0] out2;
    wire carry;
    assign { wire_0, wire_1 } = (a[28] & b[0]) + (a[27] & b[1]);
    assign { wire_2, wire_3 } = (a[29] & b[0]) + (a[28] & b[1]) + (a[27] & b[2]);
    assign { wire_4, wire_5 } = (a[26] & b[3]) + (a[25] & b[4]);
    assign { wire_6, wire_7 } = (a[30] & b[0]) + (a[29] & b[1]) + (a[28] & b[2]);
    assign { wire_8, wire_9 } = (a[27] & b[3]) + (a[26] & b[4]) + (a[25] & b[5]);
    assign { wire_10, wire_11 } = (a[24] & b[6]) + (a[23] & b[7]);
    assign { wire_12, wire_13 } = (a[31] & b[0]) + (a[30] & b[1]) + (a[29] & b[2]);
    assign { wire_14, wire_15 } = (a[28] & b[3]) + (a[27] & b[4]) + (a[26] & b[5]);
    assign { wire_16, wire_17 } = (a[25] & b[6]) + (a[24] & b[7]) + (a[23] & b[8]);
    assign { wire_18, wire_19 } = (a[22] & b[9]) + (a[21] & b[10]);
    assign { wire_20, wire_21 } = (a[19] & b[0]) + (a[18] & b[1]);
    assign { wire_22, wire_23 } = (a[20] & b[0]) + (a[19] & b[1]) + (a[18] & b[2]);
    assign { wire_24, wire_25 } = (a[17] & b[3]) + (a[16] & b[4]);
    assign { wire_26, wire_27 } = (a[21] & b[0]) + (a[20] & b[1]) + (a[19] & b[2]);
    assign { wire_28, wire_29 } = (a[18] & b[3]) + (a[17] & b[4]) + (a[16] & b[5]);
    assign { wire_30, wire_31 } = (a[15] & b[6]) + (a[14] & b[7]);
    assign { wire_32, wire_33 } = (a[22] & b[0]) + (a[21] & b[1]) + (a[20] & b[2]);
    assign { wire_34, wire_35 } = (a[19] & b[3]) + (a[18] & b[4]) + (a[17] & b[5]);
    assign { wire_36, wire_37 } = (a[16] & b[6]) + (a[15] & b[7]) + (a[14] & b[8]);
    assign { wire_38, wire_39 } = (a[13] & b[9]) + (a[12] & b[10]);
    assign { wire_40, wire_41 } = (a[23] & b[0]) + (a[22] & b[1]) + (a[21] & b[2]);
    assign { wire_42, wire_43 } = (a[20] & b[3]) + (a[19] & b[4]) + (a[18] & b[5]);
    assign { wire_44, wire_45 } = (a[17] & b[6]) + (a[16] & b[7]) + (a[15] & b[8]);
    assign { wire_46, wire_47 } = (a[14] & b[9]) + (a[13] & b[10]) + (a[12] & b[11]);
    assign { wire_48, wire_49 } = (a[11] & b[12]) + (a[10] & b[13]);
    assign { wire_50, wire_51 } = (a[24] & b[0]) + (a[23] & b[1]) + (a[22] & b[2]);
    assign { wire_52, wire_53 } = (a[21] & b[3]) + (a[20] & b[4]) + (a[19] & b[5]);
    assign { wire_54, wire_55 } = (a[18] & b[6]) + (a[17] & b[7]) + (a[16] & b[8]);
    assign { wire_56, wire_57 } = (a[15] & b[9]) + (a[14] & b[10]) + (a[13] & b[11]);
    assign { wire_58, wire_59 } = (a[12] & b[12]) + (a[11] & b[13]) + (a[10] & b[14]);
    assign { wire_60, wire_61 } = (a[9] & b[15]) + (a[8] & b[16]);
    assign { wire_62, wire_63 } = (a[25] & b[0]) + (a[24] & b[1]) + (a[23] & b[2]);
    assign { wire_64, wire_65 } = (a[22] & b[3]) + (a[21] & b[4]) + (a[20] & b[5]);
    assign { wire_66, wire_67 } = (a[19] & b[6]) + (a[18] & b[7]) + (a[17] & b[8]);
    assign { wire_68, wire_69 } = (a[16] & b[9]) + (a[15] & b[10]) + (a[14] & b[11]);
    assign { wire_70, wire_71 } = (a[13] & b[12]) + (a[12] & b[13]) + (a[11] & b[14]);
    assign { wire_72, wire_73 } = (a[10] & b[15]) + (a[9] & b[16]) + (a[8] & b[17]);
    assign { wire_74, wire_75 } = (a[7] & b[18]) + (a[6] & b[19]);
    assign { wire_76, wire_77 } = (a[26] & b[0]) + (a[25] & b[1]) + (a[24] & b[2]);
    assign { wire_78, wire_79 } = (a[23] & b[3]) + (a[22] & b[4]) + (a[21] & b[5]);
    assign { wire_80, wire_81 } = (a[20] & b[6]) + (a[19] & b[7]) + (a[18] & b[8]);
    assign { wire_82, wire_83 } = (a[17] & b[9]) + (a[16] & b[10]) + (a[15] & b[11]);
    assign { wire_84, wire_85 } = (a[14] & b[12]) + (a[13] & b[13]) + (a[12] & b[14]);
    assign { wire_86, wire_87 } = (a[11] & b[15]) + (a[10] & b[16]) + (a[9] & b[17]);
    assign { wire_88, wire_89 } = (a[8] & b[18]) + (a[7] & b[19]) + (a[6] & b[20]);
    assign { wire_90, wire_91 } = (a[5] & b[21]) + (a[4] & b[22]);
    assign { wire_92, wire_93 } = (a[27] & b[0]) + (a[26] & b[1]) + (a[25] & b[2]);
    assign { wire_94, wire_95 } = (a[24] & b[3]) + (a[23] & b[4]) + (a[22] & b[5]);
    assign { wire_96, wire_97 } = (a[21] & b[6]) + (a[20] & b[7]) + (a[19] & b[8]);
    assign { wire_98, wire_99 } = (a[18] & b[9]) + (a[17] & b[10]) + (a[16] & b[11]);
    assign { wire_100, wire_101 } = (a[15] & b[12]) + (a[14] & b[13]) + (a[13] & b[14]);
    assign { wire_102, wire_103 } = (a[12] & b[15]) + (a[11] & b[16]) + (a[10] & b[17]);
    assign { wire_104, wire_105 } = (a[9] & b[18]) + (a[8] & b[19]) + (a[7] & b[20]);
    assign { wire_106, wire_107 } = (a[6] & b[21]) + (a[5] & b[22]) + (a[4] & b[23]);
    assign { wire_108, wire_109 } = (a[3] & b[24]) + (a[2] & b[25]);
    assign { wire_110, wire_111 } = (a[26] & b[2]) + (a[25] & b[3]) + (a[24] & b[4]);
    assign { wire_112, wire_113 } = (a[23] & b[5]) + (a[22] & b[6]) + (a[21] & b[7]);
    assign { wire_114, wire_115 } = (a[20] & b[8]) + (a[19] & b[9]) + (a[18] & b[10]);
    assign { wire_116, wire_117 } = (a[17] & b[11]) + (a[16] & b[12]) + (a[15] & b[13]);
    assign { wire_118, wire_119 } = (a[14] & b[14]) + (a[13] & b[15]) + (a[12] & b[16]);
    assign { wire_120, wire_121 } = (a[11] & b[17]) + (a[10] & b[18]) + (a[9] & b[19]);
    assign { wire_122, wire_123 } = (a[8] & b[20]) + (a[7] & b[21]) + (a[6] & b[22]);
    assign { wire_124, wire_125 } = (a[5] & b[23]) + (a[4] & b[24]) + (a[3] & b[25]);
    assign { wire_126, wire_127 } = (a[2] & b[26]) + (a[1] & b[27]) + (a[0] & b[28]);
    assign { wire_128, wire_129 } = (a[24] & b[5]) + (a[23] & b[6]) + (a[22] & b[7]);
    assign { wire_130, wire_131 } = (a[21] & b[8]) + (a[20] & b[9]) + (a[19] & b[10]);
    assign { wire_132, wire_133 } = (a[18] & b[11]) + (a[17] & b[12]) + (a[16] & b[13]);
    assign { wire_134, wire_135 } = (a[15] & b[14]) + (a[14] & b[15]) + (a[13] & b[16]);
    assign { wire_136, wire_137 } = (a[12] & b[17]) + (a[11] & b[18]) + (a[10] & b[19]);
    assign { wire_138, wire_139 } = (a[9] & b[20]) + (a[8] & b[21]) + (a[7] & b[22]);
    assign { wire_140, wire_141 } = (a[6] & b[23]) + (a[5] & b[24]) + (a[4] & b[25]);
    assign { wire_142, wire_143 } = (a[3] & b[26]) + (a[2] & b[27]) + (a[1] & b[28]);
    assign { wire_144, wire_145 } = (a[0] & b[29]) + wire_0 + wire_3;
    assign { wire_146, wire_147 } = (a[22] & b[8]) + (a[21] & b[9]) + (a[20] & b[10]);
    assign { wire_148, wire_149 } = (a[19] & b[11]) + (a[18] & b[12]) + (a[17] & b[13]);
    assign { wire_150, wire_151 } = (a[16] & b[14]) + (a[15] & b[15]) + (a[14] & b[16]);
    assign { wire_152, wire_153 } = (a[13] & b[17]) + (a[12] & b[18]) + (a[11] & b[19]);
    assign { wire_154, wire_155 } = (a[10] & b[20]) + (a[9] & b[21]) + (a[8] & b[22]);
    assign { wire_156, wire_157 } = (a[7] & b[23]) + (a[6] & b[24]) + (a[5] & b[25]);
    assign { wire_158, wire_159 } = (a[4] & b[26]) + (a[3] & b[27]) + (a[2] & b[28]);
    assign { wire_160, wire_161 } = (a[1] & b[29]) + (a[0] & b[30]) + wire_2;
    assign { wire_162, wire_163 } = wire_4 + wire_7 + wire_9;
    assign { wire_164, wire_165 } = (a[20] & b[11]) + (a[19] & b[12]) + (a[18] & b[13]);
    assign { wire_166, wire_167 } = (a[17] & b[14]) + (a[16] & b[15]) + (a[15] & b[16]);
    assign { wire_168, wire_169 } = (a[14] & b[17]) + (a[13] & b[18]) + (a[12] & b[19]);
    assign { wire_170, wire_171 } = (a[11] & b[20]) + (a[10] & b[21]) + (a[9] & b[22]);
    assign { wire_172, wire_173 } = (a[8] & b[23]) + (a[7] & b[24]) + (a[6] & b[25]);
    assign { wire_174, wire_175 } = (a[5] & b[26]) + (a[4] & b[27]) + (a[3] & b[28]);
    assign { wire_176, wire_177 } = (a[2] & b[29]) + (a[1] & b[30]) + (a[0] & b[31]);
    assign { wire_178, wire_179 } = wire_6 + wire_8 + wire_10;
    assign { wire_180, wire_181 } = wire_13 + wire_15 + wire_17;
    assign { wire_182, wire_183 } = (a[13] & b[0]) + (a[12] & b[1]);
    assign { wire_184, wire_185 } = (a[14] & b[0]) + (a[13] & b[1]) + (a[12] & b[2]);
    assign { wire_186, wire_187 } = (a[11] & b[3]) + (a[10] & b[4]);
    assign { wire_188, wire_189 } = (a[15] & b[0]) + (a[14] & b[1]) + (a[13] & b[2]);
    assign { wire_190, wire_191 } = (a[12] & b[3]) + (a[11] & b[4]) + (a[10] & b[5]);
    assign { wire_192, wire_193 } = (a[9] & b[6]) + (a[8] & b[7]);
    assign { wire_194, wire_195 } = (a[16] & b[0]) + (a[15] & b[1]) + (a[14] & b[2]);
    assign { wire_196, wire_197 } = (a[13] & b[3]) + (a[12] & b[4]) + (a[11] & b[5]);
    assign { wire_198, wire_199 } = (a[10] & b[6]) + (a[9] & b[7]) + (a[8] & b[8]);
    assign { wire_200, wire_201 } = (a[7] & b[9]) + (a[6] & b[10]);
    assign { wire_202, wire_203 } = (a[17] & b[0]) + (a[16] & b[1]) + (a[15] & b[2]);
    assign { wire_204, wire_205 } = (a[14] & b[3]) + (a[13] & b[4]) + (a[12] & b[5]);
    assign { wire_206, wire_207 } = (a[11] & b[6]) + (a[10] & b[7]) + (a[9] & b[8]);
    assign { wire_208, wire_209 } = (a[8] & b[9]) + (a[7] & b[10]) + (a[6] & b[11]);
    assign { wire_210, wire_211 } = (a[5] & b[12]) + (a[4] & b[13]);
    assign { wire_212, wire_213 } = (a[18] & b[0]) + (a[17] & b[1]) + (a[16] & b[2]);
    assign { wire_214, wire_215 } = (a[15] & b[3]) + (a[14] & b[4]) + (a[13] & b[5]);
    assign { wire_216, wire_217 } = (a[12] & b[6]) + (a[11] & b[7]) + (a[10] & b[8]);
    assign { wire_218, wire_219 } = (a[9] & b[9]) + (a[8] & b[10]) + (a[7] & b[11]);
    assign { wire_220, wire_221 } = (a[6] & b[12]) + (a[5] & b[13]) + (a[4] & b[14]);
    assign { wire_222, wire_223 } = (a[3] & b[15]) + (a[2] & b[16]);
    assign { wire_224, wire_225 } = (a[17] & b[2]) + (a[16] & b[3]) + (a[15] & b[4]);
    assign { wire_226, wire_227 } = (a[14] & b[5]) + (a[13] & b[6]) + (a[12] & b[7]);
    assign { wire_228, wire_229 } = (a[11] & b[8]) + (a[10] & b[9]) + (a[9] & b[10]);
    assign { wire_230, wire_231 } = (a[8] & b[11]) + (a[7] & b[12]) + (a[6] & b[13]);
    assign { wire_232, wire_233 } = (a[5] & b[14]) + (a[4] & b[15]) + (a[3] & b[16]);
    assign { wire_234, wire_235 } = (a[2] & b[17]) + (a[1] & b[18]) + (a[0] & b[19]);
    assign { wire_236, wire_237 } = (a[15] & b[5]) + (a[14] & b[6]) + (a[13] & b[7]);
    assign { wire_238, wire_239 } = (a[12] & b[8]) + (a[11] & b[9]) + (a[10] & b[10]);
    assign { wire_240, wire_241 } = (a[9] & b[11]) + (a[8] & b[12]) + (a[7] & b[13]);
    assign { wire_242, wire_243 } = (a[6] & b[14]) + (a[5] & b[15]) + (a[4] & b[16]);
    assign { wire_244, wire_245 } = (a[3] & b[17]) + (a[2] & b[18]) + (a[1] & b[19]);
    assign { wire_246, wire_247 } = (a[0] & b[20]) + wire_20 + wire_23;
    assign { wire_248, wire_249 } = (a[13] & b[8]) + (a[12] & b[9]) + (a[11] & b[10]);
    assign { wire_250, wire_251 } = (a[10] & b[11]) + (a[9] & b[12]) + (a[8] & b[13]);
    assign { wire_252, wire_253 } = (a[7] & b[14]) + (a[6] & b[15]) + (a[5] & b[16]);
    assign { wire_254, wire_255 } = (a[4] & b[17]) + (a[3] & b[18]) + (a[2] & b[19]);
    assign { wire_256, wire_257 } = (a[1] & b[20]) + (a[0] & b[21]) + wire_22;
    assign { wire_258, wire_259 } = wire_24 + wire_27 + wire_29;
    assign { wire_260, wire_261 } = (a[11] & b[11]) + (a[10] & b[12]) + (a[9] & b[13]);
    assign { wire_262, wire_263 } = (a[8] & b[14]) + (a[7] & b[15]) + (a[6] & b[16]);
    assign { wire_264, wire_265 } = (a[5] & b[17]) + (a[4] & b[18]) + (a[3] & b[19]);
    assign { wire_266, wire_267 } = (a[2] & b[20]) + (a[1] & b[21]) + (a[0] & b[22]);
    assign { wire_268, wire_269 } = wire_26 + wire_28 + wire_30;
    assign { wire_270, wire_271 } = wire_33 + wire_35 + wire_37;
    assign { wire_272, wire_273 } = (a[9] & b[14]) + (a[8] & b[15]) + (a[7] & b[16]);
    assign { wire_274, wire_275 } = (a[6] & b[17]) + (a[5] & b[18]) + (a[4] & b[19]);
    assign { wire_276, wire_277 } = (a[3] & b[20]) + (a[2] & b[21]) + (a[1] & b[22]);
    assign { wire_278, wire_279 } = (a[0] & b[23]) + wire_32 + wire_34;
    assign { wire_280, wire_281 } = wire_36 + wire_38 + wire_41;
    assign { wire_282, wire_283 } = wire_43 + wire_45 + wire_47;
    assign { wire_284, wire_285 } = (a[7] & b[17]) + (a[6] & b[18]) + (a[5] & b[19]);
    assign { wire_286, wire_287 } = (a[4] & b[20]) + (a[3] & b[21]) + (a[2] & b[22]);
    assign { wire_288, wire_289 } = (a[1] & b[23]) + (a[0] & b[24]) + wire_40;
    assign { wire_290, wire_291 } = wire_42 + wire_44 + wire_46;
    assign { wire_292, wire_293 } = wire_48 + wire_51 + wire_53;
    assign { wire_294, wire_295 } = wire_55 + wire_57 + wire_59;
    assign { wire_296, wire_297 } = (a[5] & b[20]) + (a[4] & b[21]) + (a[3] & b[22]);
    assign { wire_298, wire_299 } = (a[2] & b[23]) + (a[1] & b[24]) + (a[0] & b[25]);
    assign { wire_300, wire_301 } = wire_50 + wire_52 + wire_54;
    assign { wire_302, wire_303 } = wire_56 + wire_58 + wire_60;
    assign { wire_304, wire_305 } = wire_63 + wire_65 + wire_67;
    assign { wire_306, wire_307 } = wire_69 + wire_71 + wire_73;
    assign { wire_308, wire_309 } = (a[3] & b[23]) + (a[2] & b[24]) + (a[1] & b[25]);
    assign { wire_310, wire_311 } = (a[0] & b[26]) + wire_62 + wire_64;
    assign { wire_312, wire_313 } = wire_66 + wire_68 + wire_70;
    assign { wire_314, wire_315 } = wire_72 + wire_74 + wire_77;
    assign { wire_316, wire_317 } = wire_79 + wire_81 + wire_83;
    assign { wire_318, wire_319 } = wire_85 + wire_87 + wire_89;
    assign { wire_320, wire_321 } = (a[1] & b[26]) + (a[0] & b[27]) + wire_76;
    assign { wire_322, wire_323 } = wire_78 + wire_80 + wire_82;
    assign { wire_324, wire_325 } = wire_84 + wire_86 + wire_88;
    assign { wire_326, wire_327 } = wire_90 + wire_93 + wire_95;
    assign { wire_328, wire_329 } = wire_97 + wire_99 + wire_101;
    assign { wire_330, wire_331 } = wire_103 + wire_105 + wire_107;
    assign { wire_332, wire_333 } = wire_1 + wire_92 + wire_94;
    assign { wire_334, wire_335 } = wire_96 + wire_98 + wire_100;
    assign { wire_336, wire_337 } = wire_102 + wire_104 + wire_106;
    assign { wire_338, wire_339 } = wire_108 + wire_111 + wire_113;
    assign { wire_340, wire_341 } = wire_115 + wire_117 + wire_119;
    assign { wire_342, wire_343 } = wire_121 + wire_123 + wire_125;
    assign { wire_344, wire_345 } = wire_5 + wire_110 + wire_112;
    assign { wire_346, wire_347 } = wire_114 + wire_116 + wire_118;
    assign { wire_348, wire_349 } = wire_120 + wire_122 + wire_124;
    assign { wire_350, wire_351 } = wire_126 + wire_129 + wire_131;
    assign { wire_352, wire_353 } = wire_133 + wire_135 + wire_137;
    assign { wire_354, wire_355 } = wire_139 + wire_141 + wire_143;
    assign { wire_356, wire_357 } = wire_11 + wire_128 + wire_130;
    assign { wire_358, wire_359 } = wire_132 + wire_134 + wire_136;
    assign { wire_360, wire_361 } = wire_138 + wire_140 + wire_142;
    assign { wire_362, wire_363 } = wire_144 + wire_147 + wire_149;
    assign { wire_364, wire_365 } = wire_151 + wire_153 + wire_155;
    assign { wire_366, wire_367 } = wire_157 + wire_159 + wire_161;
    assign { wire_368, wire_369 } = wire_19 + wire_146 + wire_148;
    assign { wire_370, wire_371 } = wire_150 + wire_152 + wire_154;
    assign { wire_372, wire_373 } = wire_156 + wire_158 + wire_160;
    assign { wire_374, wire_375 } = wire_162 + wire_165 + wire_167;
    assign { wire_376, wire_377 } = wire_169 + wire_171 + wire_173;
    assign { wire_378, wire_379 } = wire_175 + wire_177 + wire_179;
    assign { wire_380, wire_381 } = (a[9] & b[0]) + (a[8] & b[1]);
    assign { wire_382, wire_383 } = (a[10] & b[0]) + (a[9] & b[1]) + (a[8] & b[2]);
    assign { wire_384, wire_385 } = (a[7] & b[3]) + (a[6] & b[4]);
    assign { wire_386, wire_387 } = (a[11] & b[0]) + (a[10] & b[1]) + (a[9] & b[2]);
    assign { wire_388, wire_389 } = (a[8] & b[3]) + (a[7] & b[4]) + (a[6] & b[5]);
    assign { wire_390, wire_391 } = (a[5] & b[6]) + (a[4] & b[7]);
    assign { wire_392, wire_393 } = (a[12] & b[0]) + (a[11] & b[1]) + (a[10] & b[2]);
    assign { wire_394, wire_395 } = (a[9] & b[3]) + (a[8] & b[4]) + (a[7] & b[5]);
    assign { wire_396, wire_397 } = (a[6] & b[6]) + (a[5] & b[7]) + (a[4] & b[8]);
    assign { wire_398, wire_399 } = (a[3] & b[9]) + (a[2] & b[10]);
    assign { wire_400, wire_401 } = (a[11] & b[2]) + (a[10] & b[3]) + (a[9] & b[4]);
    assign { wire_402, wire_403 } = (a[8] & b[5]) + (a[7] & b[6]) + (a[6] & b[7]);
    assign { wire_404, wire_405 } = (a[5] & b[8]) + (a[4] & b[9]) + (a[3] & b[10]);
    assign { wire_406, wire_407 } = (a[2] & b[11]) + (a[1] & b[12]) + (a[0] & b[13]);
    assign { wire_408, wire_409 } = (a[9] & b[5]) + (a[8] & b[6]) + (a[7] & b[7]);
    assign { wire_410, wire_411 } = (a[6] & b[8]) + (a[5] & b[9]) + (a[4] & b[10]);
    assign { wire_412, wire_413 } = (a[3] & b[11]) + (a[2] & b[12]) + (a[1] & b[13]);
    assign { wire_414, wire_415 } = (a[0] & b[14]) + wire_182 + wire_185;
    assign { wire_416, wire_417 } = (a[7] & b[8]) + (a[6] & b[9]) + (a[5] & b[10]);
    assign { wire_418, wire_419 } = (a[4] & b[11]) + (a[3] & b[12]) + (a[2] & b[13]);
    assign { wire_420, wire_421 } = (a[1] & b[14]) + (a[0] & b[15]) + wire_184;
    assign { wire_422, wire_423 } = wire_186 + wire_189 + wire_191;
    assign { wire_424, wire_425 } = (a[5] & b[11]) + (a[4] & b[12]) + (a[3] & b[13]);
    assign { wire_426, wire_427 } = (a[2] & b[14]) + (a[1] & b[15]) + (a[0] & b[16]);
    assign { wire_428, wire_429 } = wire_188 + wire_190 + wire_192;
    assign { wire_430, wire_431 } = wire_195 + wire_197 + wire_199;
    assign { wire_432, wire_433 } = (a[3] & b[14]) + (a[2] & b[15]) + (a[1] & b[16]);
    assign { wire_434, wire_435 } = (a[0] & b[17]) + wire_194 + wire_196;
    assign { wire_436, wire_437 } = wire_198 + wire_200 + wire_203;
    assign { wire_438, wire_439 } = wire_205 + wire_207 + wire_209;
    assign { wire_440, wire_441 } = (a[1] & b[17]) + (a[0] & b[18]) + wire_202;
    assign { wire_442, wire_443 } = wire_204 + wire_206 + wire_208;
    assign { wire_444, wire_445 } = wire_210 + wire_213 + wire_215;
    assign { wire_446, wire_447 } = wire_217 + wire_219 + wire_221;
    assign { wire_448, wire_449 } = wire_21 + wire_212 + wire_214;
    assign { wire_450, wire_451 } = wire_216 + wire_218 + wire_220;
    assign { wire_452, wire_453 } = wire_222 + wire_225 + wire_227;
    assign { wire_454, wire_455 } = wire_229 + wire_231 + wire_233;
    assign { wire_456, wire_457 } = wire_25 + wire_224 + wire_226;
    assign { wire_458, wire_459 } = wire_228 + wire_230 + wire_232;
    assign { wire_460, wire_461 } = wire_234 + wire_237 + wire_239;
    assign { wire_462, wire_463 } = wire_241 + wire_243 + wire_245;
    assign { wire_464, wire_465 } = wire_31 + wire_236 + wire_238;
    assign { wire_466, wire_467 } = wire_240 + wire_242 + wire_244;
    assign { wire_468, wire_469 } = wire_246 + wire_249 + wire_251;
    assign { wire_470, wire_471 } = wire_253 + wire_255 + wire_257;
    assign { wire_472, wire_473 } = wire_39 + wire_248 + wire_250;
    assign { wire_474, wire_475 } = wire_252 + wire_254 + wire_256;
    assign { wire_476, wire_477 } = wire_258 + wire_261 + wire_263;
    assign { wire_478, wire_479 } = wire_265 + wire_267 + wire_269;
    assign { wire_480, wire_481 } = wire_49 + wire_260 + wire_262;
    assign { wire_482, wire_483 } = wire_264 + wire_266 + wire_268;
    assign { wire_484, wire_485 } = wire_270 + wire_273 + wire_275;
    assign { wire_486, wire_487 } = wire_277 + wire_279 + wire_281;
    assign { wire_488, wire_489 } = wire_61 + wire_272 + wire_274;
    assign { wire_490, wire_491 } = wire_276 + wire_278 + wire_280;
    assign { wire_492, wire_493 } = wire_282 + wire_285 + wire_287;
    assign { wire_494, wire_495 } = wire_289 + wire_291 + wire_293;
    assign { wire_496, wire_497 } = wire_75 + wire_284 + wire_286;
    assign { wire_498, wire_499 } = wire_288 + wire_290 + wire_292;
    assign { wire_500, wire_501 } = wire_294 + wire_297 + wire_299;
    assign { wire_502, wire_503 } = wire_301 + wire_303 + wire_305;
    assign { wire_504, wire_505 } = wire_91 + wire_296 + wire_298;
    assign { wire_506, wire_507 } = wire_300 + wire_302 + wire_304;
    assign { wire_508, wire_509 } = wire_306 + wire_309 + wire_311;
    assign { wire_510, wire_511 } = wire_313 + wire_315 + wire_317;
    assign { wire_512, wire_513 } = wire_109 + wire_308 + wire_310;
    assign { wire_514, wire_515 } = wire_312 + wire_314 + wire_316;
    assign { wire_516, wire_517 } = wire_318 + wire_321 + wire_323;
    assign { wire_518, wire_519 } = wire_325 + wire_327 + wire_329;
    assign { wire_520, wire_521 } = wire_127 + wire_320 + wire_322;
    assign { wire_522, wire_523 } = wire_324 + wire_326 + wire_328;
    assign { wire_524, wire_525 } = wire_330 + wire_333 + wire_335;
    assign { wire_526, wire_527 } = wire_337 + wire_339 + wire_341;
    assign { wire_528, wire_529 } = wire_145 + wire_332 + wire_334;
    assign { wire_530, wire_531 } = wire_336 + wire_338 + wire_340;
    assign { wire_532, wire_533 } = wire_342 + wire_345 + wire_347;
    assign { wire_534, wire_535 } = wire_349 + wire_351 + wire_353;
    assign { wire_536, wire_537 } = wire_163 + wire_344 + wire_346;
    assign { wire_538, wire_539 } = wire_348 + wire_350 + wire_352;
    assign { wire_540, wire_541 } = wire_354 + wire_357 + wire_359;
    assign { wire_542, wire_543 } = wire_361 + wire_363 + wire_365;
    assign { wire_544, wire_545 } = wire_181 + wire_356 + wire_358;
    assign { wire_546, wire_547 } = wire_360 + wire_362 + wire_364;
    assign { wire_548, wire_549 } = wire_366 + wire_369 + wire_371;
    assign { wire_550, wire_551 } = wire_373 + wire_375 + wire_377;
    assign { wire_552, wire_553 } = (a[6] & b[0]) + (a[5] & b[1]);
    assign { wire_554, wire_555 } = (a[7] & b[0]) + (a[6] & b[1]) + (a[5] & b[2]);
    assign { wire_556, wire_557 } = (a[4] & b[3]) + (a[3] & b[4]);
    assign { wire_558, wire_559 } = (a[8] & b[0]) + (a[7] & b[1]) + (a[6] & b[2]);
    assign { wire_560, wire_561 } = (a[5] & b[3]) + (a[4] & b[4]) + (a[3] & b[5]);
    assign { wire_562, wire_563 } = (a[2] & b[6]) + (a[1] & b[7]);
    assign { wire_564, wire_565 } = (a[7] & b[2]) + (a[6] & b[3]) + (a[5] & b[4]);
    assign { wire_566, wire_567 } = (a[4] & b[5]) + (a[3] & b[6]) + (a[2] & b[7]);
    assign { wire_568, wire_569 } = (a[1] & b[8]) + (a[0] & b[9]) + wire_381;
    assign { wire_570, wire_571 } = (a[5] & b[5]) + (a[4] & b[6]) + (a[3] & b[7]);
    assign { wire_572, wire_573 } = (a[2] & b[8]) + (a[1] & b[9]) + (a[0] & b[10]);
    assign { wire_574, wire_575 } = wire_380 + wire_383 + wire_385;
    assign { wire_576, wire_577 } = (a[3] & b[8]) + (a[2] & b[9]) + (a[1] & b[10]);
    assign { wire_578, wire_579 } = (a[0] & b[11]) + wire_382 + wire_384;
    assign { wire_580, wire_581 } = wire_387 + wire_389 + wire_391;
    assign { wire_582, wire_583 } = (a[1] & b[11]) + (a[0] & b[12]) + wire_386;
    assign { wire_584, wire_585 } = wire_388 + wire_390 + wire_393;
    assign { wire_586, wire_587 } = wire_395 + wire_397 + wire_399;
    assign { wire_588, wire_589 } = wire_183 + wire_392 + wire_394;
    assign { wire_590, wire_591 } = wire_396 + wire_398 + wire_401;
    assign { wire_592, wire_593 } = wire_403 + wire_405 + wire_407;
    assign { wire_594, wire_595 } = wire_187 + wire_400 + wire_402;
    assign { wire_596, wire_597 } = wire_404 + wire_406 + wire_409;
    assign { wire_598, wire_599 } = wire_411 + wire_413 + wire_415;
    assign { wire_600, wire_601 } = wire_193 + wire_408 + wire_410;
    assign { wire_602, wire_603 } = wire_412 + wire_414 + wire_417;
    assign { wire_604, wire_605 } = wire_419 + wire_421 + wire_423;
    assign { wire_606, wire_607 } = wire_201 + wire_416 + wire_418;
    assign { wire_608, wire_609 } = wire_420 + wire_422 + wire_425;
    assign { wire_610, wire_611 } = wire_427 + wire_429 + wire_431;
    assign { wire_612, wire_613 } = wire_211 + wire_424 + wire_426;
    assign { wire_614, wire_615 } = wire_428 + wire_430 + wire_433;
    assign { wire_616, wire_617 } = wire_435 + wire_437 + wire_439;
    assign { wire_618, wire_619 } = wire_223 + wire_432 + wire_434;
    assign { wire_620, wire_621 } = wire_436 + wire_438 + wire_441;
    assign { wire_622, wire_623 } = wire_443 + wire_445 + wire_447;
    assign { wire_624, wire_625 } = wire_235 + wire_440 + wire_442;
    assign { wire_626, wire_627 } = wire_444 + wire_446 + wire_449;
    assign { wire_628, wire_629 } = wire_451 + wire_453 + wire_455;
    assign { wire_630, wire_631 } = wire_247 + wire_448 + wire_450;
    assign { wire_632, wire_633 } = wire_452 + wire_454 + wire_457;
    assign { wire_634, wire_635 } = wire_459 + wire_461 + wire_463;
    assign { wire_636, wire_637 } = wire_259 + wire_456 + wire_458;
    assign { wire_638, wire_639 } = wire_460 + wire_462 + wire_465;
    assign { wire_640, wire_641 } = wire_467 + wire_469 + wire_471;
    assign { wire_642, wire_643 } = wire_271 + wire_464 + wire_466;
    assign { wire_644, wire_645 } = wire_468 + wire_470 + wire_473;
    assign { wire_646, wire_647 } = wire_475 + wire_477 + wire_479;
    assign { wire_648, wire_649 } = wire_283 + wire_472 + wire_474;
    assign { wire_650, wire_651 } = wire_476 + wire_478 + wire_481;
    assign { wire_652, wire_653 } = wire_483 + wire_485 + wire_487;
    assign { wire_654, wire_655 } = wire_295 + wire_480 + wire_482;
    assign { wire_656, wire_657 } = wire_484 + wire_486 + wire_489;
    assign { wire_658, wire_659 } = wire_491 + wire_493 + wire_495;
    assign { wire_660, wire_661 } = wire_307 + wire_488 + wire_490;
    assign { wire_662, wire_663 } = wire_492 + wire_494 + wire_497;
    assign { wire_664, wire_665 } = wire_499 + wire_501 + wire_503;
    assign { wire_666, wire_667 } = wire_319 + wire_496 + wire_498;
    assign { wire_668, wire_669 } = wire_500 + wire_502 + wire_505;
    assign { wire_670, wire_671 } = wire_507 + wire_509 + wire_511;
    assign { wire_672, wire_673 } = wire_331 + wire_504 + wire_506;
    assign { wire_674, wire_675 } = wire_508 + wire_510 + wire_513;
    assign { wire_676, wire_677 } = wire_515 + wire_517 + wire_519;
    assign { wire_678, wire_679 } = wire_343 + wire_512 + wire_514;
    assign { wire_680, wire_681 } = wire_516 + wire_518 + wire_521;
    assign { wire_682, wire_683 } = wire_523 + wire_525 + wire_527;
    assign { wire_684, wire_685 } = wire_355 + wire_520 + wire_522;
    assign { wire_686, wire_687 } = wire_524 + wire_526 + wire_529;
    assign { wire_688, wire_689 } = wire_531 + wire_533 + wire_535;
    assign { wire_690, wire_691 } = wire_367 + wire_528 + wire_530;
    assign { wire_692, wire_693 } = wire_532 + wire_534 + wire_537;
    assign { wire_694, wire_695 } = wire_539 + wire_541 + wire_543;
    assign { wire_696, wire_697 } = wire_379 + wire_536 + wire_538;
    assign { wire_698, wire_699 } = wire_540 + wire_542 + wire_545;
    assign { wire_700, wire_701 } = wire_547 + wire_549 + wire_551;
    assign { wire_702, wire_703 } = (a[4] & b[0]) + (a[3] & b[1]);
    assign { wire_704, wire_705 } = (a[5] & b[0]) + (a[4] & b[1]) + (a[3] & b[2]);
    assign { wire_706, wire_707 } = (a[2] & b[3]) + (a[1] & b[4]);
    assign { wire_708, wire_709 } = (a[4] & b[2]) + (a[3] & b[3]) + (a[2] & b[4]);
    assign { wire_710, wire_711 } = (a[1] & b[5]) + (a[0] & b[6]) + wire_553;
    assign { wire_712, wire_713 } = (a[2] & b[5]) + (a[1] & b[6]) + (a[0] & b[7]);
    assign { wire_714, wire_715 } = wire_552 + wire_555 + wire_557;
    assign { wire_716, wire_717 } = (a[0] & b[8]) + wire_554 + wire_556;
    assign { wire_718, wire_719 } = wire_559 + wire_561 + wire_563;
    assign { wire_720, wire_721 } = wire_558 + wire_560 + wire_562;
    assign { wire_722, wire_723 } = wire_565 + wire_567 + wire_569;
    assign { wire_724, wire_725 } = wire_564 + wire_566 + wire_568;
    assign { wire_726, wire_727 } = wire_571 + wire_573 + wire_575;
    assign { wire_728, wire_729 } = wire_570 + wire_572 + wire_574;
    assign { wire_730, wire_731 } = wire_577 + wire_579 + wire_581;
    assign { wire_732, wire_733 } = wire_576 + wire_578 + wire_580;
    assign { wire_734, wire_735 } = wire_583 + wire_585 + wire_587;
    assign { wire_736, wire_737 } = wire_582 + wire_584 + wire_586;
    assign { wire_738, wire_739 } = wire_589 + wire_591 + wire_593;
    assign { wire_740, wire_741 } = wire_588 + wire_590 + wire_592;
    assign { wire_742, wire_743 } = wire_595 + wire_597 + wire_599;
    assign { wire_744, wire_745 } = wire_594 + wire_596 + wire_598;
    assign { wire_746, wire_747 } = wire_601 + wire_603 + wire_605;
    assign { wire_748, wire_749 } = wire_600 + wire_602 + wire_604;
    assign { wire_750, wire_751 } = wire_607 + wire_609 + wire_611;
    assign { wire_752, wire_753 } = wire_606 + wire_608 + wire_610;
    assign { wire_754, wire_755 } = wire_613 + wire_615 + wire_617;
    assign { wire_756, wire_757 } = wire_612 + wire_614 + wire_616;
    assign { wire_758, wire_759 } = wire_619 + wire_621 + wire_623;
    assign { wire_760, wire_761 } = wire_618 + wire_620 + wire_622;
    assign { wire_762, wire_763 } = wire_625 + wire_627 + wire_629;
    assign { wire_764, wire_765 } = wire_624 + wire_626 + wire_628;
    assign { wire_766, wire_767 } = wire_631 + wire_633 + wire_635;
    assign { wire_768, wire_769 } = wire_630 + wire_632 + wire_634;
    assign { wire_770, wire_771 } = wire_637 + wire_639 + wire_641;
    assign { wire_772, wire_773 } = wire_636 + wire_638 + wire_640;
    assign { wire_774, wire_775 } = wire_643 + wire_645 + wire_647;
    assign { wire_776, wire_777 } = wire_642 + wire_644 + wire_646;
    assign { wire_778, wire_779 } = wire_649 + wire_651 + wire_653;
    assign { wire_780, wire_781 } = wire_648 + wire_650 + wire_652;
    assign { wire_782, wire_783 } = wire_655 + wire_657 + wire_659;
    assign { wire_784, wire_785 } = wire_654 + wire_656 + wire_658;
    assign { wire_786, wire_787 } = wire_661 + wire_663 + wire_665;
    assign { wire_788, wire_789 } = wire_660 + wire_662 + wire_664;
    assign { wire_790, wire_791 } = wire_667 + wire_669 + wire_671;
    assign { wire_792, wire_793 } = wire_666 + wire_668 + wire_670;
    assign { wire_794, wire_795 } = wire_673 + wire_675 + wire_677;
    assign { wire_796, wire_797 } = wire_672 + wire_674 + wire_676;
    assign { wire_798, wire_799 } = wire_679 + wire_681 + wire_683;
    assign { wire_800, wire_801 } = wire_678 + wire_680 + wire_682;
    assign { wire_802, wire_803 } = wire_685 + wire_687 + wire_689;
    assign { wire_804, wire_805 } = wire_684 + wire_686 + wire_688;
    assign { wire_806, wire_807 } = wire_691 + wire_693 + wire_695;
    assign { wire_808, wire_809 } = wire_690 + wire_692 + wire_694;
    assign { wire_810, wire_811 } = wire_697 + wire_699 + wire_701;
    assign { wire_812, wire_813 } = (a[3] & b[0]) + (a[2] & b[1]);
    assign { wire_814, wire_815 } = (a[2] & b[2]) + (a[1] & b[3]) + (a[0] & b[4]);
    assign { wire_816, wire_817 } = (a[0] & b[5]) + wire_702 + wire_705;
    assign { wire_818, wire_819 } = wire_704 + wire_706 + wire_709;
    assign { wire_820, wire_821 } = wire_708 + wire_710 + wire_713;
    assign { wire_822, wire_823 } = wire_712 + wire_714 + wire_717;
    assign { wire_824, wire_825 } = wire_716 + wire_718 + wire_721;
    assign { wire_826, wire_827 } = wire_720 + wire_722 + wire_725;
    assign { wire_828, wire_829 } = wire_724 + wire_726 + wire_729;
    assign { wire_830, wire_831 } = wire_728 + wire_730 + wire_733;
    assign { wire_832, wire_833 } = wire_732 + wire_734 + wire_737;
    assign { wire_834, wire_835 } = wire_736 + wire_738 + wire_741;
    assign { wire_836, wire_837 } = wire_740 + wire_742 + wire_745;
    assign { wire_838, wire_839 } = wire_744 + wire_746 + wire_749;
    assign { wire_840, wire_841 } = wire_748 + wire_750 + wire_753;
    assign { wire_842, wire_843 } = wire_752 + wire_754 + wire_757;
    assign { wire_844, wire_845 } = wire_756 + wire_758 + wire_761;
    assign { wire_846, wire_847 } = wire_760 + wire_762 + wire_765;
    assign { wire_848, wire_849 } = wire_764 + wire_766 + wire_769;
    assign { wire_850, wire_851 } = wire_768 + wire_770 + wire_773;
    assign { wire_852, wire_853 } = wire_772 + wire_774 + wire_777;
    assign { wire_854, wire_855 } = wire_776 + wire_778 + wire_781;
    assign { wire_856, wire_857 } = wire_780 + wire_782 + wire_785;
    assign { wire_858, wire_859 } = wire_784 + wire_786 + wire_789;
    assign { wire_860, wire_861 } = wire_788 + wire_790 + wire_793;
    assign { wire_862, wire_863 } = wire_792 + wire_794 + wire_797;
    assign { wire_864, wire_865 } = wire_796 + wire_798 + wire_801;
    assign { wire_866, wire_867 } = wire_800 + wire_802 + wire_805;
    assign { wire_868, wire_869 } = wire_804 + wire_806 + wire_809;
    assign { wire_870, wire_871 } = (a[2] & b[0]) + (a[1] & b[1]);
    assign { wire_872, wire_873 } = (a[1] & b[2]) + (a[0] & b[3]) + wire_813;
    assign { wire_874, wire_875 } = wire_703 + wire_812 + wire_815;
    assign { wire_876, wire_877 } = wire_707 + wire_814 + wire_817;
    assign { wire_878, wire_879 } = wire_711 + wire_816 + wire_819;
    assign { wire_880, wire_881 } = wire_715 + wire_818 + wire_821;
    assign { wire_882, wire_883 } = wire_719 + wire_820 + wire_823;
    assign { wire_884, wire_885 } = wire_723 + wire_822 + wire_825;
    assign { wire_886, wire_887 } = wire_727 + wire_824 + wire_827;
    assign { wire_888, wire_889 } = wire_731 + wire_826 + wire_829;
    assign { wire_890, wire_891 } = wire_735 + wire_828 + wire_831;
    assign { wire_892, wire_893 } = wire_739 + wire_830 + wire_833;
    assign { wire_894, wire_895 } = wire_743 + wire_832 + wire_835;
    assign { wire_896, wire_897 } = wire_747 + wire_834 + wire_837;
    assign { wire_898, wire_899 } = wire_751 + wire_836 + wire_839;
    assign { wire_900, wire_901 } = wire_755 + wire_838 + wire_841;
    assign { wire_902, wire_903 } = wire_759 + wire_840 + wire_843;
    assign { wire_904, wire_905 } = wire_763 + wire_842 + wire_845;
    assign { wire_906, wire_907 } = wire_767 + wire_844 + wire_847;
    assign { wire_908, wire_909 } = wire_771 + wire_846 + wire_849;
    assign { wire_910, wire_911 } = wire_775 + wire_848 + wire_851;
    assign { wire_912, wire_913 } = wire_779 + wire_850 + wire_853;
    assign { wire_914, wire_915 } = wire_783 + wire_852 + wire_855;
    assign { wire_916, wire_917 } = wire_787 + wire_854 + wire_857;
    assign { wire_918, wire_919 } = wire_791 + wire_856 + wire_859;
    assign { wire_920, wire_921 } = wire_795 + wire_858 + wire_861;
    assign { wire_922, wire_923 } = wire_799 + wire_860 + wire_863;
    assign { wire_924, wire_925 } = wire_803 + wire_862 + wire_865;
    assign { wire_926, wire_927 } = wire_807 + wire_864 + wire_867;
    assign { wire_928, wire_929 } = wire_811 + wire_866 + wire_869;
    assign t1 = {wire_929, wire_927, wire_925, wire_923, wire_921, wire_919, wire_917, wire_915, wire_913, wire_911, wire_909, wire_907, wire_905, wire_903, wire_901, wire_899, wire_897, wire_895, wire_893, wire_891, wire_889, wire_887, wire_885, wire_883, wire_881, wire_879, wire_877, wire_875, wire_873, wire_871, (a[0] & b[1]), (a[0] & b[0])};
    assign t2 = {wire_926, wire_924, wire_922, wire_920, wire_918, wire_916, wire_914, wire_912, wire_910, wire_908, wire_906, wire_904, wire_902, wire_900, wire_898, wire_896, wire_894, wire_892, wire_890, wire_888, wire_886, wire_884, wire_882, wire_880, wire_878, wire_876, wire_874, wire_872, wire_870, (a[0] & b[2]), (a[1] & b[0]), 1'b0};
    assign { carry, out1 } = { 1'b0, t1[15:0] } + { 1'b0, t2[15:0] };
    assign out2a = t1[31:16] + t2[31:16];
    assign out2b = t1[31:16] + t2[31:16] + 1;
    assign out2 = carry ? out2b : out2a;
    assign out = {out2, out1};
endmodule
